package com.future.message.Mapper;

import com.future.message.pojo.Index;
import com.future.message.pojo.RelevantReport;

import java.util.List;

public interface RelevantReportMapper {

    //添加填报关联,将指标分配给用户
    Integer addRelevantReport(RelevantReport relevantReport);
    //删除指标
    Integer deleteRelevantReport(Integer relevantReportId);
    //遍历该用户下的指标
    List<RelevantReport>  findRelevantByUserId(Integer userId);
    //遍历所有填报关联(分配给用户的指标)
    List<RelevantReport> findAllRelevantReport();
    //根据id查找填报关联
    RelevantReport findRelevantReportById(Integer relevantReportId);
    //批量删除(填报关联-数组)
    Integer deleteRelevantList(Integer [] relevantReportId);
    //批量删除(填报关联-List集合)
    Integer deleteRelevantLists(List<Integer> relevantReportId);
    //遍历分配给该用户的一级指标
    List<RelevantReport> findFirstIndexReport(Integer userId,Integer groupIdx);
    //遍历分配给用户的二级指标
    List<RelevantReport> findSecondIndexReport(Integer userId,Integer firstIndexId,Integer groupIdx);
    //遍历分配给用户的三级指标
    List<RelevantReport> findThirdIndexReport(Integer userId,Integer secondIndexId);
    //查询该用户是否分配过
    List<RelevantReport> findOfRelevantReport(Integer userId,Integer thirdIndexId);
    //修改填报关联是否填写0--->1
    Integer updateOfReport(Integer relevantReportId);
    //修改填报关联是否填写1--->0
    Integer updateOfReportToZero(Integer relevantReportId);
    //查询该用户需要填写多少个三级指标---共有几个指标
    Integer countIndexNumberByUserId(Integer userId);
    //查询该用户完成了多少个三级指标---已完成几个指标
    Integer countCompleteIndexNumberByUserId(Integer userId);
    //查询分配给该用户一级指标下的指标数量---该一级指标下总共有几个需要完成
    Integer countIndexNumberByUserIdAndFirstIndexId(Integer userId,Integer firstIndexId);
    //查询分配给该用户一级指标下的完成的指标数量---该一级指标下完成了几个指标
    Integer countCompleteIndexNumberByUserIdIndexId(Integer userId,Integer firstIndexId);
    //批量删除-根据三级指标
    Integer deleteByThirdIndexId(Integer[] thirdIndexId);
    //根据用户Id删除填报关联
    Integer deleteRelevantByUserId(Integer userId);
    //查询所有的一级指标下的填报关联
    List<RelevantReport> findRelevantReportByFirstIndexId(Integer firstIndexId);
    //查询所有耳机指标下的填报关联
    List<RelevantReport> findRelevantReportBySecondIndexId(Integer secondIndexId);
    //查询所有三级指标下的填报关联
    List<RelevantReport> findRelevantReportByThirdIndexId(Integer thirdIndexId);
    //遍历二级指标下的三级指标
    List<RelevantReport> findThirdIndexListBySecondIndexList(Integer secondIndexId);
    //查询该二级指标下的三级指标个数
    Integer countThirdIndexBySecondIndexId(Integer SecondIndexId);
    //查询该二级指标下的三级指标完成数
    Integer countCompleteThirdIndexBySecondIndexId(Integer secondIndexId);
    //查找排名
    List<RelevantReport> findRowNumber();
    //查询该一级指标下所有用户的id
    Integer [] findUserIdsByFirstIndexId(Integer firstIndexId);
    //查询二级指标下的所有用户的id
    Integer [] findUserIdsBySecondIndexId(Integer secondIndexId);
    Integer countIndexNumberByUserIdAndSecondIndexId(Integer userId,Integer secondIndexId);
    Integer countIndexNumberByUserIdAndThirdIndexId(Integer userId,Integer thirdIndexId);
    //遍历分配给某用户的一级指标--一级指标id
    Integer [] findFirstIndexIdByUserId(Integer userId);
    //遍历分配给某用户的二级指标--二级指标id
    Integer [] findSecondIndexIdByUserId(Integer userId,Integer firstIndexId);
    //通过用户id和三级指标id确定一条填报关联
    RelevantReport findRelevantReportByUserIdAndThirdIndexId(Integer userId,Integer thirdIndexId);
    //通过用户id和一级指标id查找该用户下一级指标下的单所有三级指标id
    Integer[] findThirdIndexIdByUserIdAndFirstIndexId(Integer userId,Integer firstIndexId);
    //通过用户id和一级指标id批量查询填报关联id
    Integer[] findReportIdByFirstIndexIdAndUserId(Integer firstIndexId,Integer userId);
    //通过用户id和二级指标id批量查询填报关联id
    Integer[] findReportIdBySecondIndexIdAndUserId(Integer secondIndexId,Integer userId);
}
